1 /* 2 * Hunt - a framework for web and console application based on Collie using Dlang development 3 * 4 * Copyright (C) 2015-2017 Shanghai Putao Technology Co., Ltd 5 * 6 * Developer: HuntLabs 7 * 8 * Licensed under the Apache-2.0 License. 9 * 10 */ 11 12 module hunt.http.code; 13 14 enum HTTPCodes { 15 CONTINUE = 100, 16 SWITCHING_PROTOCOLS = 101, 17 OK = 200, 18 CREATED = 201, 19 ACCEPTED = 202, 20 NON_AUTHORITATIVE_INFORMATION = 203, 21 NO_CONTENT = 204, 22 RESET_CONTENT = 205, 23 PARTIAL_CONTENT = 206, 24 25 MULTIPLE_CHOICES = 300, 26 MOVED_PERMANENTLY = 301, 27 FOUND = 302, 28 SEE_OTHER = 303, 29 NOT_MODIFIED = 304, 30 USE_PROXY = 305, 31 TEMPORARY_REDIRECT = 307, 32 33 BAD_REQUEST = 400, 34 UNAUTHORIZED = 401, 35 PAYMENT_REQUIRED = 402, 36 FORHIDDEN = 403, 37 NOT_FOUND = 404, 38 METHOD_NOT_ALLOWED = 405, 39 NOT_ACCEPTABLE = 406, 40 PROXY_AUTHENTICATION_REQUIRED = 407, 41 REQUEST_TIMEOUT = 408, 42 CONFLICT = 409, 43 GONE = 410, 44 LENGTH_REQUIRED = 411, 45 PRECONDITION_FAILED = 412, 46 REQUEST_ENTITY_TOO_LARGE = 413, 47 REQUEST_URI_TOO_LARGE = 414, 48 UNSUPPORTED_MEDIA_TYPE = 415, 49 REQUESTED_RANGE_NOT_SATISFIABLE = 416, 50 EXPECTATION_FAILED = 417, 51 TOO_MANY_REQUESTS = 429, 52 UNAVAILABLE_FOR_LAGAL_REASONS = 451, 53 54 INTERNAL_SERVER_ERROR = 500, 55 NOT_IMPLEMENTED = 501, 56 BAD_GATEWAY = 502, 57 SERVICE_UNAVALIBALE = 503, 58 GATEWAY_TIMEOUT = 504, 59 HTTP_VERSION_NOT_SUPPORTED = 505, 60 61 // for WebDAV 62 MULI_STATUS = 207, 63 UNPROCESSABLE_ENTITY = 422, 64 LOCKED = 423, 65 FAILED_DEPENDENCY = 424, 66 INSUFFICIENT_STORAGE = 507 67 } 68 69 @safe nothrow @nogc pure: 70 71 string HTTPCodeText(int code) 72 { 73 switch(code) 74 { 75 default: break; 76 case HTTPCodes.CONTINUE : return "Continue"; 77 case HTTPCodes.SWITCHING_PROTOCOLS : return "Switching Protocols"; 78 case HTTPCodes.OK : return "OK"; 79 case HTTPCodes.CREATED : return "Created"; 80 case HTTPCodes.ACCEPTED : return "Accepted"; 81 case HTTPCodes.NON_AUTHORITATIVE_INFORMATION : return "Non-Authoritative Information"; 82 case HTTPCodes.NO_CONTENT : return "No Content"; 83 case HTTPCodes.RESET_CONTENT : return "Reset Content"; 84 case HTTPCodes.PARTIAL_CONTENT : return "Partial Content"; 85 case HTTPCodes.MULTIPLE_CHOICES : return "Multiple Choices"; 86 case HTTPCodes.MOVED_PERMANENTLY : return "Moved Permanently"; 87 case HTTPCodes.FOUND : return "Found"; 88 case HTTPCodes.SEE_OTHER : return "See Other"; 89 case HTTPCodes.NOT_MODIFIED : return "Not Modified"; 90 case HTTPCodes.USE_PROXY : return "Use Proxy"; 91 case HTTPCodes.TEMPORARY_REDIRECT : return "Temporary Redirect"; 92 case HTTPCodes.BAD_REQUEST : return "Bad Request"; 93 case HTTPCodes.UNAUTHORIZED : return "Unauthorized"; 94 case HTTPCodes.PAYMENT_REQUIRED : return "Payment Required"; 95 case HTTPCodes.FORHIDDEN : return "Forbidden"; 96 case HTTPCodes.NOT_FOUND : return "Not Found"; 97 case HTTPCodes.METHOD_NOT_ALLOWED : return "Method Not Allowed"; 98 case HTTPCodes.NOT_ACCEPTABLE : return "Not Acceptable"; 99 case HTTPCodes.PROXY_AUTHENTICATION_REQUIRED : return "Proxy Authentication Required"; 100 case HTTPCodes.REQUEST_TIMEOUT : return "Request Time-out"; 101 case HTTPCodes.CONFLICT : return "Conflict"; 102 case HTTPCodes.GONE : return "Gone"; 103 case HTTPCodes.LENGTH_REQUIRED : return "Length Required"; 104 case HTTPCodes.PRECONDITION_FAILED : return "Precondition Failed"; 105 case HTTPCodes.REQUEST_ENTITY_TOO_LARGE : return "Request Entity Too Large"; 106 case HTTPCodes.REQUEST_URI_TOO_LARGE : return "Request-URI Too Large"; 107 case HTTPCodes.UNSUPPORTED_MEDIA_TYPE : return "Unsupported Media Type"; 108 case HTTPCodes.REQUESTED_RANGE_NOT_SATISFIABLE : return "Requested range not satisfiable"; 109 case HTTPCodes.EXPECTATION_FAILED : return "Expectation Failed"; 110 case HTTPCodes.UNAVAILABLE_FOR_LAGAL_REASONS : return "Unavailable For Legal Reasons"; 111 case HTTPCodes.INTERNAL_SERVER_ERROR : return "Internal Server Error"; 112 case HTTPCodes.NOT_IMPLEMENTED : return "Not Implemented"; 113 case HTTPCodes.BAD_GATEWAY : return "Bad Gateway"; 114 case HTTPCodes.SERVICE_UNAVALIBALE : return "Service Unavailable"; 115 case HTTPCodes.GATEWAY_TIMEOUT : return "Gateway Time-out"; 116 case HTTPCodes.HTTP_VERSION_NOT_SUPPORTED : return "HTTP Version not supported"; 117 118 // WebDAV status codes 119 case HTTPCodes.MULI_STATUS : return "Multi-Status"; 120 case HTTPCodes.UNPROCESSABLE_ENTITY : return "Unprocessable Entity"; 121 case HTTPCodes.LOCKED : return "Locked"; 122 case HTTPCodes.FAILED_DEPENDENCY : return "Failed Dependency"; 123 case HTTPCodes.INSUFFICIENT_STORAGE : return "Insufficient Storage"; 124 } 125 126 if( code >= 600 ) return "Unknown"; 127 if( code >= 500 ) return "Unknown server error"; 128 if( code >= 400 ) return "Unknown error"; 129 if( code >= 300 ) return "Unknown redirection"; 130 if( code >= 200 ) return "Unknown success"; 131 if( code >= 100 ) return "Unknown information"; 132 133 return "Unknown"; 134 } 135 136 bool isSuccessCode(HTTPCodes code) 137 { 138 return (code >= 200 && code < 300); 139 }